Consider the above example from the lecture note. If we partition the orginal graph into $\{ a, b, c, d, e, f, h, i \}, \{ g \}$, then it's clear that $(g, f)$ is a safe edge but $(g, h)$ is the only light edge.
Let $T$ be a minimum spanning tree of graph $G$. Assume that $T$ is not a bottleneck spanning tree. Thus, for the largest weight edge of $T$, written $(u, v)$, there exists another spanning tree $T'$ of $G$ which contains no edge with weight $\geq (u,v)$. If $(u, v)$ is removed from $T$, then it consequently cut $T$ into $2$ parts. But since $T'$ is also a spanning tree, we can find another edge $(u', v')$ from $T'$ to connect these $2$ parts and construct a new spanning tree $T''$ with $w(T) > w(T'')$. That implies $T$ is not a minimum spanning tree and leading a contradiction.
BOTTLENECK-SPANNING-TREE($G$)
$M :=$ largest weight in $G.E$
$m :=$ smallest weight in $G.E$
$b := \lfloor \frac{M + m}{2} \rfloor$
$T := \phi$
while $|G.V| > 1$:
if CHECK-BST($G$, $b$):
$M := b$
$b := \lfloor \frac{M + m}{2} \rfloor$
else:
$m := b$
$b := \lfloor \frac{M + m}{2} \rfloor$
$G, T := $MST-REDUCE($G$,$T$)
if CHECK-BST($G$, $b$):
return $b$ and $T$
else:
return $(b+1)$ and $T$
Hence, the time complexity is $O(|E|)$.